home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / ModelessStuff.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-29  |  4.2 KB  |  184 lines  |  [TEXT/CWIE]

  1. /* ModelessStuff.c -- modeless dialog */
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12. #include <stdlib.h>
  13.  
  14. #include "ResourceDefs.h"
  15. #include "Miscellany.h"
  16. #include "ControlUtils.h"
  17.  
  18. #include "Dispatcher.h"
  19. #include "ModelessStuff.h"
  20.  
  21. #define kToolsPalette        1
  22. #define kPopupsBox        2
  23. #define kFromValuesList2Popup        3
  24. #define kFromMenuPopup        4
  25. #define kListsBox        5
  26. #define kTextListList        6
  27.  
  28. static void        BuildTextListList    (ControlHandle        inControl);
  29.  
  30. /*----------*/
  31. static void        BuildTextListList (
  32.     ControlHandle        inControl)
  33. {
  34.     ListHandle        list;
  35.  
  36.     list = GetListHandle (inControl);
  37.     AddToList ("\pOne",   list);
  38.     AddToList ("\pTwo",   list);
  39.     AddToList ("\pThree", list);
  40.     AddToList ("\pInfinity",  list);
  41.  
  42. }
  43.  
  44. //----------
  45. DialogPtr        ModelessStuffDialog = nil;
  46.  
  47. //----------
  48. void    ModelessStuff_Create ()
  49. {
  50.     ModelessStuff*            dialog = NewModelessStuff ();
  51.     DModelessStuffData*        data = NewDModelessStuffData ();
  52.  
  53.     AMDialog_MakeDialog ((AMDialog*)dialog, DLOG_ModelessStuff);
  54.     ModelessStuff_ConnectToData (dialog, (AMSignaler*)data);
  55. }
  56.  
  57. //----------
  58. void    ModelessStuff_Show ()
  59. {
  60.     if (ModelessStuffDialog == nil) {
  61.         ModelessStuff_Create ();
  62.     }
  63.     if (ModelessStuffDialog != nil) {
  64.         SelectWindow (ModelessStuffDialog);
  65.         ShowWindow (ModelessStuffDialog);
  66.     }
  67. }
  68.  
  69. //----------
  70. void    ModelessStuff_Close ()
  71. {
  72.     HideWindow (ModelessStuffDialog);
  73. }
  74.  
  75. //----------
  76. ModelessStuff*        NewModelessStuff ()
  77. {
  78.     ModelessStuff*        dialog;
  79.  
  80.     dialog = (ModelessStuff*)malloc (sizeof (ModelessStuff));
  81.     ModelessStuff_Init (dialog);
  82.     SetClassID (dialog, classModelessStuff);
  83.  
  84.     return dialog;
  85. }
  86.  
  87. //----------
  88. void    DeleteModelessStuff (
  89.     ModelessStuff*        dialog)
  90. {
  91.     ModelessStuff_Free (dialog);
  92.     free (dialog);
  93. }
  94.  
  95. //----------
  96. void    ModelessStuff_Init (
  97.     ModelessStuff*        self)
  98. {
  99.     AMDialog_Init ((AMDialog*)self);
  100. }
  101.  
  102. //----------
  103. void    ModelessStuff_Free (
  104.     ModelessStuff*        self)
  105. {
  106.     AMDialog_Free ((AMDialog*)self);
  107. }
  108.  
  109. //----------
  110. void    ModelessStuff_FinishMake (
  111.     ModelessStuff*        self)
  112. {
  113.     ModelessStuffDialog = ((AMDialog*)self)->mDialog;
  114.  
  115.     self->mToolsHandle = AMDialog_GetControlItem ((AMDialog*)self, kToolsPalette);
  116.     self->mPopupsHandle = AMDialog_GetControlItem ((AMDialog*)self, kPopupsBox);
  117.     self->mFromValuesList2Handle = AMDialog_GetControlItem ((AMDialog*)self, kFromValuesList2Popup);
  118.     self->mFromMenuHandle = AMDialog_GetControlItem ((AMDialog*)self, kFromMenuPopup);
  119.     self->mListsHandle = AMDialog_GetControlItem ((AMDialog*)self, kListsBox);
  120.     self->mTextListHandle = AMDialog_GetControlItem ((AMDialog*)self, kTextListList);
  121. }
  122.  
  123. //----------
  124. void    ModelessStuff_ConnectToData (
  125.     ModelessStuff*        self,
  126.     AMSignaler*        inData)
  127. {
  128.     AMDialog_ConnectToData ((AMDialog*)self, inData);
  129.     self->mData = (DModelessStuffData*) inData;
  130.  
  131.     SetControlValue (self->mToolsHandle, GetTools3 (self->mData));
  132.     SetControlValue (self->mFromValuesList2Handle, GetFromValuesList4 (self->mData));
  133.     SetControlValue (self->mFromMenuHandle, GetFromMenu3 (self->mData));
  134.     BuildTextListList (self->mTextListHandle);
  135.     SetListBoxChoice (self->mTextListHandle, GetTextList3 (self->mData));
  136. }
  137.  
  138. //----------
  139. void    ModelessStuff_DoItem (
  140.     ModelessStuff*        self,
  141.     SInt16        inItemHit)
  142. {
  143.     switch (inItemHit) {
  144.     case kToolsPalette:
  145.             SetTools3 (self->mData, GetControlValue (self->mToolsHandle));
  146.         break;
  147.     case kFromValuesList2Popup:
  148.             SetFromValuesList4 (self->mData, GetControlValue (self->mFromValuesList2Handle));
  149.         break;
  150.     case kFromMenuPopup:
  151.             SetFromMenu3 (self->mData, GetControlValue (self->mFromMenuHandle));
  152.         break;
  153.     case kTextListList:
  154.             SetTextList3 (self->mData, GetListBoxChoice (self->mTextListHandle));
  155.         break;
  156.  
  157.     } // switch
  158. }
  159.  
  160. //----------
  161. void    ModelessStuff_DataChanged (
  162.     ModelessStuff*        self,
  163.     long        inDataID)
  164. {
  165.     if (inDataID == idTools3) {
  166.         SetControlValue (self->mToolsHandle, GetTools3 (self->mData));
  167.     }
  168.     if (inDataID == idFromValuesList4) {
  169.         SetControlValue (self->mFromValuesList2Handle, GetFromValuesList4 (self->mData));
  170.     }
  171.     if (inDataID == idFromMenu3) {
  172.         SetControlValue (self->mFromMenuHandle, GetFromMenu3 (self->mData));
  173.     }
  174. }
  175.  
  176. //----------
  177. Boolean        ModelessStuff_Filter (
  178.     ModelessStuff*            self,
  179.     EventRecord            *ioEvent,
  180.     DialogItemIndex        *outItemHit)
  181. {
  182.     return AMDialog_Filter ((AMDialog*)self, ioEvent, outItemHit);
  183. }
  184.